package edu.whut.mall.admin.service;

import edu.whut.mall.admin.domain.MerchantParams;
import edu.whut.mall.admin.domain.MerchantSearchParams;
import edu.whut.mall.admin.domain.UserParams;
import edu.whut.mall.admin.vo.MerchantVo;
import edu.whut.mall.admin.vo.UserVo;
import edu.whut.mall.common.api.CommonPage;

import java.util.List;

/**
 * @ClassName: IMerchantService
 * @Description: 商家相关服务类
 * @Author: lvfanbing
 * @Date: 2020-10-12 17:19
 * @Version: 1.0
 */
public interface IMerchantService {
    /**
     * @Description: 新增一个商家
     * @param merchantParams
     * @return:
     * @Author: lvfanbing
     * @Date: 2020/10/12 17:29
     */
    int insertOneMerchant(MerchantParams merchantParams);

    /**
     * @Description 删除一个商家
     * @param merchantId
     * @return
     * @Author lvfanbing
     * @Date 2020/10/13 14:27
     */
    int deleteOneMerchant(Long merchantId);

    /**
     * @Description: 更新一个商家的信息
     * @param merchantParams
     * @return:
     * @Author: lvfanbing
     * @Date: 2020/10/12 18:49
     */
    int updateOneMerchant(Long merchantId, MerchantParams merchantParams);
    
    /**
     * @Description: 商家入驻状态更新
     * @param merchantId
     * @param status 0 -> 已入驻， 1 -> 审核中， 2 -> 已拒绝， 3 -> 已撤销
     * @return: 
     * @Author: lvfanbing
     * @Date: 2020/10/12 18:51
     */
    int updateOneMerchantSettledStatus(Long merchantId, Integer status);

    /**
     * @Description: 为商家分配管理员
     * @param merchantId
     * @param regIp
     * @param userParams
     * @return:
     * @Author: lvfanbing
     * @Date: 2020/10/12 19:38
     */
    int assignAdminToMerchant(Long merchantId, String regIp, UserParams userParams);

    /**
     * @Description 设置商家销售款的去向
     * @param merchantId
     * @param direction  0 -> 商家账户， 1 -> 平台账户
     * @return
     * @Author lvfanbing
     * @Date 2020/10/14 9:57
     */
    int setProceedsFlowDirection(Long merchantId, Integer direction);

    /**
     * @Description: 获取所有商家列表
     * @param pageNum
     * @param size
     * @return:
     * @Author: lvfanbing
     * @Date: 2020/10/12 20:16
     */
    CommonPage<MerchantVo> listAllMerchant(Integer pageNum, Integer size);

    /**
     * @Description: 根据條件获取商家列表
     * @param merchantSearchParams
     * @param pageNum
     * @param size
     * @return:
     * @Author: lvfanbing
     * @Date: 2020/10/12 20:30
     */
    CommonPage<MerchantVo> listMerchantByCondition(MerchantSearchParams merchantSearchParams, Integer pageNum, Integer size);

    /**
     * @Description 获取商家的所有管理员信息
     * @param merchantId
     * @return
     * @Author lvfanbing
     * @Date 2020/10/12 20:35
     */
    List<UserVo> listAllAdminByMerchantId(Long merchantId);
}
